The present invention relates to processing of communications among central processing units (CPUs) in a multiprocessor system and, more particularly, to a system for processing end-of-process reports which are generated asynchronously to each other when process requests are applied from one CPU to others at the same time.
In a multiprocessor system, it often occurs that one CPU needs access to another or other CPUs for requesting processing while its own processing is under way. It is, therefore, a common practice to construct a multiprocessor system such that CPUs are capable of communicating with each other to interchange requests for processing. Specifically, in a multiprocessor system having two CPUs, after one CPU has sent a request for processing to the other CPU, the former awaits the end of processing by the latter and, upon reception of an end-of-process report, advances to the next processing based on the content of the report. On the other hand, in a multiprocessor system having three or more CPUs, in the case that one CPU desires access to a plurality of other CPUs for requesting processing, the intervals of processing time of the CPUs to be accessed are different from each other and, moreover, the end-of-process report is sometimes different from one CPU to another. For this reason, there is adopted either one of two different procedures: one in which, as in the multiprocessor system having two CPUs, a process request is sent to one CPU and, upon the arrival of an end-of-process report from that CPU, a process request is sent to another CPU, and the other in which process requests are sent to a plurality of CPUs at the same time while the resulting end-of-process reports are monitored on a CPU-by-CPU basis by firmware to be processed one after another.
As stated above, in a multiprocessor system having three or more CPUs, one CPU has to send a process request to another CPU, then await an end-of-process report from the latter, and then access still another CPU by sending a process request thereto or, alternatively, it has to process end-of-process reports sequentially on a CPU basis. Even if the kinds of processing requested to a plurality of CPUs are the same or even if a plurality of CPUs can execute processing in parallel with each other, it is necessary to request the individual CPUs processing one after another or to use complicated firmware processing. Hence, as the number of CPUs which are accessed increases, the period of time necessary for all the kinds of processing to be completed is increased.